import Vue from 'vue'
import App from './App.vue'
//引入vuex
import store from '@/vuex/store'
//引入样式  用来设置element-ui中组件的样式
import './assets/style/global.css';
//引入样式，用来设置整体的通用样式
import '@/assets/style/resets.css';
//引入moment，为了设置日期格式
import moment from 'moment';
//引入element-ui  下载了之后要引入
// import ElementUI from "element-ui";
//引入路由器
import router from './router/index';
// 引入样式文件，否则无样式
import 'element-ui/lib/theme-chalk/index.css';
//引入面包屑组件
import BreadCrumb from "@/components/commons/BreadCrumb.vue";
//引入echarts
import echarts from 'echarts';
// 引入要使用的组件 按需引入
import {
Container,
Header,
Aside,
Main,
Form,
FormItem,
Button,
Input,
Select,
Option,
DatePicker,
TimePicker,
Col,
Row,
Message,
Table,
TableColumn,
Image,
Pagination
} from 'element-ui'
import VueRouter from 'vue-router';
// 将其放到Vue的原型对象上
Vue.prototype.$message = Message;
Vue.prototype.$moment = moment;
Vue.prototype.$echarts = echarts;

//将vuex的核心对象放到Vue上
Vue.store = store;

Vue.config.productionTip = false

//使用elementui  引入之后要使用
// Vue.use(ElementUI);
//使用全局注册组件
Vue.use(Container);
Vue.use(Header);
Vue.use(Aside);
Vue.use(Main);
Vue.use(Form);
Vue.use(FormItem);
Vue.use(Button);
Vue.use(Input);
Vue.use(Select);
Vue.use(Option);
Vue.use(DatePicker);
Vue.use(TimePicker);
Vue.use(Col);
Vue.use(Row);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(Image);
Vue.use(Pagination);

//VueRouter  3版本之后  都是升级变成了promise对象，但是，只返回成功状态的值 .then ，没有设置 .catch。  重复点击报错，就是因为 push  replace
//统一处理catch

const originPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location,onResolve,onReject){
  if(onResolve || onReject) return originPush.call(this,location,onResolve,onReject)
  return originPush.call(this,location).catch(err=>err);
}

const originReplace = VueRouter.prototype.replace;
VueRouter.prototype.replace = function replace(location,onResolve,onReject){
  if(onResolve || onReject) return originReplace.call(this,location,onResolve,onReject)
  return originReplace.call(this,location).catch(err=>err);
}


//全局注册面包屑组件
Vue.component('BreadCrumb',BreadCrumb)
new Vue({
  store,//注册store对象，注册完之后所有组件中都可以访问到$store
  router,//注册路由器
  render: h => h(App),
}).$mount('#app')
